/*
 * getcommand.h
 *
 *  Created on: Nov 16, 2009
 *      Author: kevin
 */

#ifndef GETCOMMAND_H_
#define GETCOMMAND_H_

#include "command/command.h"
#include <Poco/Net/ServerSocket.h>

using Poco::Net::ServerSocket;

namespace Commands {

class GetCommand: public Commands::Command {
public:
	GetCommand( string const& fileName, UInt16 port, SocketAddress* s = 0);
	virtual ~GetCommand();

	/**
	* Executes the command
	*/
	void execute();

	/**
	* Returns the name by which the command is registered with a CommandFactory
	* @return commandname
	*/
	string name();

	/**
	* Return a string with which this command can be remade if it were fed into a CommandFactory
	* @return representational string
	*/
	string repr();

	/**
	* Return the creator to make this command given the representational string
	* @return a CommandCreator for this Command
	*/
	CommandCreator creator();
protected:
	virtual Document* toXML(Document* doc = 0);

private:
	static Command* makeCommand(string r, void* s);
	static const string NAME;

	string fName;
	UInt16 fPort;
};

}

#endif /* GETCOMMAND_H_ */
